package modelo;

import java.awt.Color;

/**
 *
 * @author alumneDAM
 */
public class Tablero {

    public static Casilla[] casillas;

    public Tablero() {
        casillas = new Casilla[56];
        this.generarTablero();
        this.rellenarPosicionesCasillas();
    }

    //Metodo para generar el tablero con sus casillas correspondientes
    private void generarTablero() {
        Casilla c;
        for (int i = 0; i < casillas.length; i++) {
            switch (i) {
                //Color amarillo no especial
                case 5:
                case 11:
                case 17:
                case 23:
                case 29:
                case 55:
                    c = new Casilla(Color.YELLOW, false);
                    casillas[i] = c;
                    break;
                //Color azul no especial
                case 13:
                case 19:
                case 25:
                case 31:
                case 37:
                case 43:
                    c = new Casilla(Color.BLUE, false);
                    casillas[i] = c;
                    break;
                //Color verde no especial
                case 4:
                case 10:
                case 16:
                case 22:
                case 48:
                case 54:
                    c = new Casilla(Color.GREEN, false);
                    casillas[i] = c;
                    break;
                //Color marron no especial
                case 3:
                case 9:
                case 15:
                case 41:
                case 47:
                case 53:
                    c = new Casilla(Color.DARK_GRAY, false);
                    casillas[i] = c;
                    break;
                //Color rosa no especial
                case 2:
                case 8:
                case 34:
                case 40:
                case 46:
                case 52:
                    c = new Casilla(Color.PINK, false);
                    casillas[i] = c;
                    break;
                //Color naranja no especial
                case 20:
                case 26:
                case 32:
                case 38:
                case 44:
                case 50:
                    c = new Casilla(Color.ORANGE, false);
                    casillas[i] = c;
                    break;
                //Color gris no especial  
                case 1:
                case 27:
                case 33:
                case 39:
                case 45:
                case 51:
                    c = new Casilla(Color.GRAY, false);
                    casillas[i] = c;
                    break;
                //Color rojo no especial 
                case 6:
                case 12:
                case 18:
                case 24:
                case 30:
                case 36:
                    c = new Casilla(Color.RED, false);
                    casillas[i] = c;
                    break;
                //Amarillo especial
                case 42:
                    c = new Casilla(Color.YELLOW, true);
                    casillas[i] = c;
                    break;
                //Azul especial
                case 0:
                    c = new Casilla(Color.BLUE, true);
                    casillas[i] = c;
                    break;
                //Verde especial
                case 35:
                    c = new Casilla(Color.GREEN, true);
                    casillas[i] = c;
                    break;
                //Marron especial
                case 28:
                    c = new Casilla(Color.DARK_GRAY, true);
                    casillas[i] = c;
                    break;
                //Rosa especial
                case 21:
                    c = new Casilla(Color.PINK, true);
                    casillas[i] = c;
                    break;
                //Naranja especial
                case 7:
                    c = new Casilla(Color.ORANGE, true);
                    casillas[i] = c;
                    break;
                //Gris especial
                case 14:
                    c = new Casilla(Color.GRAY, true);
                    casillas[i] = c;
                    break;
                //Rojo especial   
                case 49:
                    c = new Casilla(Color.RED, true);
                    casillas[i] = c;
                    break;
            }
        }
    }

    private void rellenarPosicionesCasillas() {

        casillas[0].x = 222;
        casillas[0].y = 80;

        casillas[1].x = 240;
        casillas[1].y = 80;
        casillas[2].x = 255;
        casillas[2].y = 80;
        casillas[3].x = 270;
        casillas[3].y = 80;
        casillas[4].x = 285;
        casillas[4].y = 80;
        casillas[5].x = 298;
        casillas[5].y = 80;
        casillas[6].x = 315;
        casillas[6].y = 80;

        casillas[7].x = 330;
        casillas[7].y = 80;

        casillas[8].x = 343;
        casillas[8].y = 93;
        casillas[9].x = 352;
        casillas[9].y = 106;
        casillas[10].x = 361;
        casillas[10].y = 117;
        casillas[11].x = 370;
        casillas[11].y = 126;
        casillas[12].x = 378;
        casillas[12].y = 139;
        casillas[13].x = 387;
        casillas[13].y = 152;

        casillas[14].x = 397;
        casillas[14].y = 167;

        casillas[15].x = 397;
        casillas[15].y = 187;
        casillas[16].x = 397;
        casillas[16].y = 203;
        casillas[17].x = 397;
        casillas[17].y = 219;
        casillas[18].x = 397;
        casillas[18].y = 232;
        casillas[19].x = 397;
        casillas[19].y = 247;
        casillas[20].x = 397;
        casillas[20].y = 263;

        casillas[21].x = 397;
        casillas[21].y = 281;

        casillas[22].x = 388;
        casillas[22].y = 296;
        casillas[23].x = 377;
        casillas[23].y = 306;
        casillas[24].x = 369;
        casillas[24].y = 318;
        casillas[25].x = 361;
        casillas[25].y = 332;
        casillas[26].x = 354;
        casillas[26].y = 344;
        casillas[27].x = 342;
        casillas[27].y = 354;

        casillas[28].x = 333;
        casillas[28].y = 371;

        casillas[29].x = 315;
        casillas[29].y = 371;
        casillas[30].x = 299;
        casillas[30].y = 371;
        casillas[31].x = 285;
        casillas[31].y = 371;
        casillas[32].x = 270;
        casillas[32].y = 371;
        casillas[33].x = 256;
        casillas[33].y = 371;
        casillas[34].x = 241;
        casillas[34].y = 371;

        casillas[35].x = 223;
        casillas[35].y = 371;

        casillas[36].x = 213;
        casillas[36].y = 355;
        casillas[37].x = 203;
        casillas[37].y = 342;
        casillas[38].x = 194;
        casillas[38].y = 328;
        casillas[39].x = 187;
        casillas[39].y = 319;
        casillas[40].x = 176;
        casillas[40].y = 307;
        casillas[41].x = 167;
        casillas[41].y = 295;

        casillas[42].x = 158;
        casillas[42].y = 279;

        casillas[43].x = 158;
        casillas[43].y = 258;
        casillas[44].x = 158;
        casillas[44].y = 242;
        casillas[45].x = 158;
        casillas[45].y = 227;
        casillas[46].x = 158;
        casillas[46].y = 213;
        casillas[47].x = 158;
        casillas[47].y = 199;
        casillas[48].x = 158;
        casillas[48].y = 184;

        casillas[49].x = 158;
        casillas[49].y = 165;

        casillas[50].x = 168;
        casillas[50].y = 151;
        casillas[51].x = 176;
        casillas[51].y = 139;
        casillas[52].x = 187;
        casillas[52].y = 127;
        casillas[53].x = 194;
        casillas[53].y = 117;
        casillas[54].x = 202;
        casillas[54].y = 103;
        casillas[55].x = 212;
        casillas[55].y = 94;
    }

    public Casilla getCasilla(int num) {
        return casillas[num];
    }

    public String deColorACategoria(int posicion) {
        String categoria = "";

        if (casillas[posicion].getColorCasilla() == Color.BLUE) {
            categoria = "GEOGRAFIA";
        } else if (casillas[posicion].getColorCasilla() == Color.YELLOW) {
            categoria = "HISTORIA";
        } else if (casillas[posicion].getColorCasilla() == Color.GREEN) {
            categoria = "CIENCIAS Y TECNOLOGIAS";
        } else if (casillas[posicion].getColorCasilla() == Color.PINK) {
            categoria = "ESPECTACULOS";
        } else if (casillas[posicion].getColorCasilla() == Color.DARK_GRAY) {
            categoria = "ARTE Y LITERATURA";
        } else if (casillas[posicion].getColorCasilla() == Color.GRAY) {
            categoria = "INFORMATICA";
        } else if (casillas[posicion].getColorCasilla() == Color.ORANGE) {
            categoria = "DEPORTES";
        } else if (casillas[posicion].getColorCasilla() == Color.RED) {
            categoria = "DE TODO";
        }

        return categoria;
    }

    public Color colorCategoria(int posicion) {

        if (casillas[posicion].getColorCasilla() == Color.DARK_GRAY) {
            return new Color(179, 95, 12); //Marron
        } else {
            return casillas[posicion].getColorCasilla();
        }
    }

    public class Casilla {

        private Color colorCasilla;
        private boolean especial;
        private int x;
        private int y;

        public Casilla(Color colorCasilla, boolean especial) {
            this.colorCasilla = colorCasilla;
            this.especial = especial;
        }

        public Color getColorCasilla() {
            return colorCasilla;
        }

        public boolean isEspecial() {
            return especial;
        }

        public int getX() {
            return x;
        }

        public int getY() {
            return y;
        }
       
    }
}
